/*
 * hmi.h
 *
 *  Created on: Sep 23, 2021
 *      Author: soliber
 */

#ifndef HMI_H_
#define HMI_H_

#include "main.h"
#include "cmsis_os.h"

//指示灯操作
#define LED_ENABLE()	HAL_GPIO_WritePin(EN_5V_GPIO_Port, EN_5V_Pin, GPIO_PIN_SET)
#define LED_DISABLE()	HAL_GPIO_WritePin(EN_5V_GPIO_Port, EN_5V_Pin, GPIO_PIN_RESET)

#define LED_YELLOW_ON()	HAL_GPIO_WritePin(YELLOW_GPIO_Port, YELLOW_Pin, GPIO_PIN_SET)
#define LED_YELLOW_OFF()	HAL_GPIO_WritePin(YELLOW_GPIO_Port, YELLOW_Pin, GPIO_PIN_RESET)

#define LED_GREEN_ON()		HAL_GPIO_WritePin(GREEN_GPIO_Port, GREEN_Pin, GPIO_PIN_SET)
#define LED_GREEN_OFF()	HAL_GPIO_WritePin(GREEN_GPIO_Port, GREEN_Pin, GPIO_PIN_RESET)

#define LED_RED_ON()		HAL_GPIO_WritePin(RED_GPIO_Port, RED_Pin, GPIO_PIN_SET)
#define LED_RED_OFF()		HAL_GPIO_WritePin(RED_GPIO_Port, RED_Pin, GPIO_PIN_RESET)

#define RESCUE_ON()		HAL_GPIO_WritePin(RESCUE_GPIO_Port, RESCUE_Pin, GPIO_PIN_SET)
#define RESCUE_OFF()		HAL_GPIO_WritePin(RESCUE_GPIO_Port, RESCUE_Pin, GPIO_PIN_RESET)

//任务
extern osThreadId HMITaskHandle;

//信号
#define SIGNAL_MQTT_OFFLINE	(1<<0)//MQTT不在线时，黄色指示灯常亮
#define SIGNAL_MQTT_ONLINE		(1<<1)//MQTT在线时，黄色指示灯熄灭
#define SIGNAL_ALARM			(1<<2)//报警模式下，红色指示灯快闪
#define SIGNAL_RESCUE			(1<<3)//救援模式下，红色指示灯常亮，救援模块通电，主控进入Standby模式
#define SIGNAL_SAFE			(1<<4)//安全模式下，所有指示灯均关闭
#define SIGNAL_BUTTON_PRESS	(1<<5)
#define SIGNAL_BUTTON_RELEASE	(1<<6)

//按键触发时间(ms)
#define BUTTON_HOLD_TIME 		2000

#endif /* HMI_H_ */
